#pragma once
#include "DXAMLCommon.h"
#include "IPALUri.h"

class IPALControlDownloadCallback
{
	virtual XUINT32 AddRef() = 0;
	virtual XUINT32 Release() = 0;
	virtual HRESULT MakeSeekable() = 0;
	virtual HRESULT ByteRangeRequest(void *pRangeList) = 0;
	virtual HRESULT StreamAvailable(void *stream, unsigned __int64 cbLength, CXString *pstrMime, int fRedirected, CXString *pstrFinalUrl, CXString *pstrHeadersString, unsigned int bSeekable) = 0;
	virtual HRESULT DataAvailable(int cbOffset, int cbLength, void *pBuffer) = 0;
	virtual HRESULT DownloadEnded(int xrStatus) = 0;
	virtual HRESULT StreamDestroyed() = 0;
	virtual HRESULT GetRequestedURI(IPALUri **ppUri) = 0;
	virtual unsigned int GetUnsecureDownloadAction() = 0;
	virtual HRESULT GetURL(unsigned int *cUrl, XCHAR * *pUrl) = 0;
	virtual void ReleaseResources() = 0;
};